La evolución espectacular de la tecnología y del diseño microelectrónicos ha permitido la realización de sistemas electrónicos digitales complejos en un único circuito integrado de escala de integración progresivamente elevada (muy alta (VLSI), ultra alta (ULSI), giga (GSI)) que llegan a contener en su interior más de 1.000.000 puertas lógicas. Pero esto sólo se ha podido llevar a cabo mediante un cambio profundo de las técnicas de diseño de circuitos integrados.
Los circuitos de escala de integración media y alta (MSI y LSI respectivamente) se diseñaron mediante la realización de un prototipo formado por módulos más sencillos y la comprobación de su funcionamiento antes de proceder a la integración. Esta forma de diseño recibe el nombre de abajo a arriba (bottom-up) porque se enlazan diversos módulos para constituir un bloque funcional más complejo. Pero en el caso de los circuitos integrados de complejidad VLSI y superiores no resulta práctica la realización física de un prototipo y por ello es necesario simular y verificar su correcto comportamiento antes de integrarlos. Ello trajo consigo la necesidad del desarrollo de métodos de diseño asistido por computador divididos en varias fases que, a partir de la especificación del funcionamiento, llevan hasta la descripción física del circuito, por lo que reciben el nombre de arriba a abajo (top-down). Así, mediante simulación es posible una rápida detección de errores en fases tempranas del diseño, resulta factible la reutilización del mismo para diferentes tecnologías y se pueden utilizar las herramientas de síntesis actuales para obtener rápidamente un esquema lógico o estructural y, en definitiva, una netlist* de entrada para el trazado físico (layout) del ASIC, MCM, etc. o la asignación de recursos (mapping) en el caso de la lógica programable (PLDs y FPGAs).Todo ello, obviamente, incrementa la productividad y la eficacia del diseño.
No existe unanimidad en lo que se refiere al establecimiento de las distintas fases del diseño de un sistema digital complejo, aunque la necesidad de sistematizar esta metodología ha llevado al establecimiento y progresiva aceptación de algunas propuestas. En la figura 1.1 se representa una bastante aceptada que divide el diseño en siete niveles o formas de caracterización, también denominados niveles de abstracción por cuanto establecen la cantidad de información que se especifica de un circuito o el nivel de detalle en que se encuentra una descripción respecto de su implementación física.
Nivel sistema. Describe el sistema como un conjunto de módulos semiautónomos y cooperantes, cuya interacción se analiza para obtener un conjunto óptimo. No se especifica la forma de realizar cada uno de los módulos.
Nivel algorítmico, funcional o de comportamiento. Cada módulo del nivel superior se define mediante un algoritmo en un lenguaje de alto nivel (HLL). Dada la naturaleza paralela del hardware, en el que varios procesos pueden necesitar un mismo recurso (por ejemplo, un bus de datos) o en el que se deben sincronizar procesos independientes, se utilizan instrucciones muy similares a las de los lenguajes de programación concurrentes, como por ejemplo, semáforos y regiones críticas.
Nivel RTL (Register Transfer Level) o de flujo de datos (Data-Flow). En él se describe el sistema mediante diagramas de transferencias entre registros, tablas de verdad o ecuaciones lógicas. Se le concede más importancia a lo que hace el sistema que a como lo hace. Los elementos básicos de este nivel son registros, memorias, lógica combinacional y buses. Se distingue entre elementos con capacidad de almacenamiento y elementos sin ella.
Nivel lógico. Consiste en la descripción del sistema mediante la interconexión de bloques básicos, como puertas lógicas y biestables. No se realiza una descripción del comportamiento, sino de la estructura del mismo. Si se incluyen además otro tipo de bloques, en general a este nivel se le suele denominar también estructural.
Nivel conmutador. Las puertas se sustituyen por transistores considerados como conmutadores ideales que toman los valores cero o uno. La descripción es, por lo tanto, básicamente la misma que en el nivel anterior con la única diferencia de que en algunas tecnologías, como por ejemplo CMOS, surgen nuevos tipos de circuitos porque los conmutadores pueden ser bidireccionales mientras que las puertas son unidireccionales.
Nivel eléctrico. Se describe el sistema mediante modelos reales del transistor, con sus diferentes parámetros eléctricos.
Nivel físico. Está constituido por la descripción geométrica o simbólica de las máscaras que se emplean para la fabricación el circuito.
En la figura 1.2 se representa el método de diseño conceptual propuesto por Lemmert y Nebel, que utiliza un lenguaje de descripción del hardware (HDL) a través de los distintos niveles. El diseño del circuito o sistema comienza de la forma más generalizada posible, habitualmente con una especificación algorítmica en un lenguaje de alto nivel. En cada nivel se refina la descripción correspondiente y se compara con la de nivel superior. Este método implica la utilización de herramientas de diseño asistido por computador para simulación y prueba en cada nivel, y por ello los lenguajes deben proporcionar compatibilidad y consistencia entre niveles. De esta manera se trabaja de forma flexible y se logra que en un determinado momento coexistan descripciones de diferentes niveles que se pueden probar conjuntamente.